import random
import re


def get_first_sentence(string: str) -> str:
    """
    获取字符串中的第一句。

    本函数通过查找第一个全角句号（。）来分割字符串，以获取第一句。

    参数:
    string (str): 输入的字符串。

    返回:
    string (str): 第一句字符串。如果未找到句号，则返回原始字符串。
    """
    # 查找第一个全角句号的位置
    index = string.find("。")
    # 如果找到了句号
    if index != -1:
        # 返回从开头到句号的位置（包括句号）
        return string[: index + 1]
    # 如果没有找到句号，返回原始字符串
    return string


def get_two_consecutive_sentence(string: str) -> str:
    """
    从字符串中随机截取两句话，确保这两句话是连续的。

    参数:
    string (str): 输入的字符串。

    返回:
    string (str): 两句话的字符串。如果字符串中少于两句话，则返回原始字符串。
    """
    # 使用全角句号分割字符串
    sentences = string.split("。")

    # 去掉空字符串
    sentences = [sentence.strip() for sentence in sentences if sentence.strip()]

    # 如果句子数量少于2，则返回原始字符串
    if len(sentences) < 2:
        return string

    # 随机选择一个起始位置
    start_index = random.randint(0, len(sentences) - 2)

    # 获取连续的两句话
    two_sentences = sentences[start_index] + "。" + sentences[start_index + 1] + "。"

    return two_sentences


def get_two_consecutive_sentences(content: str) -> str:
    """
    从给定内容中提取两个连续的句子。

    如果内容中至少有两个句子，则返回前两个句子，用句号连接。
    如果内容中的句子少于两个，则返回原始内容，去掉末尾的标点符号。

    参数:
    content (str): 输入的文本内容。

    返回:
    str: 提取的两个连续句子或处理后的原始内容。
    """
    # 使用正则表达式根据逗号、句号、分号、问号、感叹号分割内容
    sentences = re.split(r"[，。；？！]", content)
    # 去掉空字符串
    sentences = [sentence.strip() for sentence in sentences if sentence.strip()]
    # 如果句子数量足够，返回前两句话
    if len(sentences) >= 2:
        return sentences[0] + "。" + sentences[1]
    # 如果句子数量不足，去掉末尾符号并返回
    else:
        return content.rstrip("，。；？！")


def get_first_sentence_list(two_sentence: str) -> list:
    """
    将给定的字符串内容分割成句子列表。

    该函数通过识别常见的中文标点符号（如逗号、句号、分号、问号、感叹号）来分割输入的字符串，
    并返回一个包含分割后句子的列表。在分割过程中，会移除任何因分割而产生的空字符串。

    参数:
    two_sentence (str): 包含多个句子的字符串。

    返回:
    list: 一个包含分割后句子的列表。
    """

    item = get_two_consecutive_sentences(two_sentence)
    # 再次使用正则表达式分割内容
    sentences = re.split(r"[，。；？！]", item)
    # 去掉空字符串
    sentences = [sentence.strip() for sentence in sentences if sentence.strip()]
    # 返回分割后的句子列表
    return sentences


def get_sentence_list(sentences: str) -> list:
    """
    将给定的字符串内容分割成句子列表。

    该函数通过识别的中文标点符号逗号来分割输入的字符串，
    并返回一个包含分割后句子的列表。在分割过程中，会移除任何因分割而产生的空字符串。

    参数:
    sentences (str): 包含多个句子的字符串。

    返回:
    list: 一个包含分割后句子的列表。
    """
    # 再次使用正则表达式分割内容
    sentences = re.split(r"[。]", sentences)
    # 去掉空字符串
    sentences = [sentence.strip() for sentence in sentences if sentence.strip()]
    # 返回分割后的句子列表
    return sentences


def remove_parentheses(text: str) -> str:
    """
    移除文本中的括号及其内容。

    参数:
    text (str): 包含括号的输入文本。

    返回:
    str: 移除括号及其内容后的文本。
    """

    res = re.sub(r"\([^)]*\)", "", text).strip()
    res = re.sub(r"\（[^）]*\）", "", res).strip()
    return res
